Expand description
§Rusdantic
A high-ergonomics data validation and serialization framework for Rust, inspired by Python’s Pydantic.
Rusdantic bridges the gap between serde (serialization) and validation crates like validator / garde into a single, unified derive macro.
§Quick Start
use rusdantic::prelude::*;
#[derive(Rusdantic, Debug)]
struct User {
#[rusdantic(length(min = 3, max = 20))]
username: String,
#[rusdantic(email)]
email: String,
#[rusdantic(range(min = 18))]
age: u8,
}
// Deserialize + validate in one step
let json = r#"{"username": "rust_ace", "email": "user@example.com", "age": 25}"#;
let user: User = rusdantic::from_json(json).unwrap();
// Or validate a manually constructed struct
let user = User {
username: "ab".to_string(),
email: "not-email".to_string(),
age: 16,
};
assert!(user.validate().is_err());§Features
- Unified Derive Macro:
#[derive(Rusdantic)]generatesSerialize,Deserialize, andValidatein one shot. - Validate-on-Deserialize: Validation runs during deserialization,
so invalid structs never exist in memory when using
from_json(). - Path-Aware Errors: Get precise error paths like
user.addresses[0].zip_codefor nested structures. - 7 Built-in Validators:
length,range,email,url,pattern,contains,required— plus custom validators. - Serde Compatibility: Works with
#[serde(rename)],#[serde(default)], and other serde attributes. - JSON Schema Generation: Generate Draft 2020-12 / OpenAPI 3.1 schemas.
- PII Redaction:
#[rusdantic(redact)]hides sensitive data in Debug output. - Zero-Cost Abstractions: Validation logic is monomorphized at compile time.
Modules§
- prelude
- Convenience prelude module for common imports.
- types
- Constrained types: PositiveInt, NonEmptyString, EmailStr, SecretStr, HttpUrl, etc.
Structs§
- Dump
Options - Options for controlling serialization output.
- Type
Adapter - A standalone validator/serializer for any serde-compatible type.
- Validation
Error - A single validation error with location context.
- Validation
Errors - A collection of validation errors from validating a struct.
Enums§
- Path
Segment - Path segment in a validation error location.
- Rusdantic
Error - Error type for Rusdantic operations that may fail due to either deserialization errors (malformed JSON) or validation errors (valid JSON but invalid data).
Traits§
- Dump
- Trait for types that support advanced serialization with options.
- Validate
- The core validation trait for Rusdantic.
Functions§
- from_
json - Deserialize a JSON string into a validated struct.
- from_
json_ with_ limit - Deserialize a JSON string with an input size limit.
- from_
value - Deserialize a
serde_json::Valueinto a validated struct.
Derive Macros§
- Rusdantic
- Derive macro that generates
Serialize,Deserialize, andValidateimplementations for a struct.